All data processors execute some instruction by which they move the results of their internal calculations to the remainder of the data processing system of which they are part. The results of these calculations may be moved to an external memory system for storage and later use, to a CRT for display to a human user, or to a network for transmission to another data processing system. These instructions are often referred to as "store" or "write" instructions. Store instructions typically share hardware resources with instructions that move data in the opposite direction, from the external system to the data processor, and with other specialized instructions. If two or more of these instructions occur at the same time, then the data processor must invoke some priority scheme to resolve the hardware resource conflict.
The development of modem data processors has lead to the priority of store instructions being placed second to almost any other type of internal-external instruction. For instance, most data processors execute load instructions before they execute store instructions. This priority role reflects the importance of bringing new instructions into the data processor for execution. Also, memory coherency protocol operations ("snoop operations") are executed before a store instructions. This priority rule reflects the importance of maintaining coherent data throughout the data processing system. As a consequence, store instructions often languish in internal buffers or queues while they wait to be executed after other, more senior, instructions.
The secondary priority of store instructions is not without drawbacks. Certain data processors, particularly reduced instruction set computers ("RISC"), finish executing instructions in an order different from the original program order. These data processors maintain certain information about each instruction to ensure that the data processor's architectural registers are modified in the program order. While a data processor waits to execute and ultimately complete a store instruction, it must dedicate certain of these resources to the store instructions. These resources can not be used for other instructions.